home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / BARMDI.PAK / MDICHILD.C < prev    next >
C/C++ Source or Header  |  1997-05-06  |  5KB  |  195 lines

  1. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  2. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  3. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  4. // PARTICULAR PURPOSE.
  5. //
  6. // Copyright (C) 1993-1995  Microsoft Corporation.  All Rights Reserved.
  7. //
  8. //  MODULE:   mdichild.c
  9. //
  10. //  PURPOSE:
  11. //    To implement the basic mdi child commands.
  12. //
  13. //  FUNCTIONS:
  14. //    InitMDIChild - To register the MDI child window class.
  15. //    MDIChildWndProc - Processes messages for MDI child windows.
  16. //    MsgMCCommand - Handle the WM_COMMAND messages for mdi children.
  17. //    MsgMCDestroy - Handle the WM_DESTROY messages for mdi children.
  18. //
  19. //  COMMENTS:
  20. //
  21. //
  22. //  SPECIAL INSTRUCTIONS: N/A
  23. //
  24.  
  25. #include <windows.h>            // required for all Windows applications
  26. #include <windowsx.h>
  27. #include "globals.h"            // prototypes specific to this application
  28. #include "resource.h"
  29. #include "toolbar.h"
  30. #include "statbar.h"
  31.  
  32.  
  33. static MSD rgmsd[] =
  34. {
  35.     {WM_COMMAND,    MsgMCCommand},
  36.     {WM_MENUSELECT, MsgMenuSelect},
  37.     {WM_DESTROY,    MsgMCDestroy}
  38. };
  39.  
  40. MSDI msdiChild =
  41. {
  42.     sizeof(rgmsd) / sizeof(MSD),
  43.     rgmsd,
  44.     edwpMDIChild
  45. };
  46.  
  47. static CMD rgcmd[] =
  48. {
  49.     {0, NULL}
  50. };
  51.  
  52. CMDI cmdiChild =
  53. {
  54.     sizeof(rgcmd) / sizeof(CMD),
  55.     rgcmd,
  56.     edwpMDIChild
  57. };
  58.  
  59.  
  60. // Module specific globals
  61.  
  62. char szChildName[] = SZCHILDNAME;
  63.  
  64. //
  65. //  FUNCTION: InitMDIChild(HINSTANCE)
  66. //
  67. //  PURPOSE: To register the MDI child window class.
  68. //
  69. //  PARAMETERS:
  70. //    hinst - The instance of the application used to register the class.
  71. //
  72. //  RETURN VALUE:
  73. //    TRUE - Succeeded in registering the class.
  74. //    FALSE - Failed to register the class.
  75. //
  76. //  COMMENTS:
  77. //
  78. //
  79.  
  80. BOOL InitMDIChild(HINSTANCE hinst)
  81. {
  82.     WNDCLASSEX wc;
  83.  
  84.     wc.cbSize        = sizeof(WNDCLASSEX);
  85.     wc.style         = 0;
  86.     wc.lpfnWndProc   = (WNDPROC)MDIChildWndProc;
  87.     wc.cbClsExtra    = 0;
  88.     wc.cbWndExtra    = 0;
  89.     wc.hInstance     = hinst;                      // Owner of this class
  90.     wc.hIcon         = LoadIcon(hinst, MAKEINTRESOURCE(IDI_CHILDICON));
  91.     wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
  92.     wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); // Default color
  93.     wc.lpszMenuName  = NULL;
  94.     wc.lpszClassName = szChildName;
  95.     wc.hIconSm       = LoadImage(hInst,            // Load small icon image
  96.                                  MAKEINTRESOURCE(IDI_CHILDICON),
  97.                                  IMAGE_ICON,
  98.                                  16, 16,
  99.                                  0);
  100.  
  101.     if (!RegisterClassEx(&wc))
  102.     {
  103.         //Assume we are running on NT where RegisterClassEx() is
  104.         //not implemented, so let's try calling RegisterClass().
  105.  
  106.         if (!RegisterClass((LPWNDCLASS)&wc.style))
  107.             return FALSE;
  108.     }
  109.  
  110.     return TRUE;
  111. }
  112.  
  113. //
  114. //  FUNCTION: MDIChildWndProc(HWND, UINT, WPARAM, LPARAM)
  115. //
  116. //  PURPOSE:  Processes messages for MDI child windows.
  117. //
  118. //  PARAMETERS:
  119. //    hwnd     - window handle
  120. //    uMessage - message number
  121. //    wparam   - additional information (dependant of message number)
  122. //    lparam   - additional information (dependant of message number)
  123. //
  124. //  RETURN VALUE:
  125. //    Depends on the message number.
  126. //
  127. //  COMMENTS:
  128. //    Uses the combination of the message structure defined in mditable.c
  129. //    and the DispMessage function defined in WndProc.c to handle all
  130. //    messages directed to an MDI child window.
  131. //
  132.  
  133. LRESULT CALLBACK MDIChildWndProc(HWND hwnd,
  134.                                  UINT uMessage,
  135.                                  WPARAM wparam,
  136.                                  LPARAM lparam)
  137. {
  138.     return DispMessage( &msdiChild, hwnd, uMessage, wparam, lparam );
  139. }
  140.  
  141.  
  142. //
  143. //  FUNCTION: MsgMCCommand(HWND, UINT, WPARAM, LPARAM)
  144. //
  145. //  PURPOSE: Handle the WM_COMMAND messages for mdi children.
  146. //
  147. //  PARAMETERS:
  148. //    hwnd     - window handle
  149. //    uMessage - message number (Unused)
  150. //    GET_WM_COMMAND_ID(wparam,lparam)   - Command identifier
  151. //    GET_WM_COMMAND_HWND(wparam,lparam) - Control handle
  152. //
  153. //  RETURN VALUE:
  154. //
  155. //  COMMENTS:
  156. //    Uses the combination of the command structure defined in mditable.c
  157. //    and the DispCommand function defined in WndProc.c to handle all
  158. //    commands directed to an MDI child window.
  159. //
  160. //
  161.  
  162. #pragma argsused
  163. LRESULT MsgMCCommand(HWND hwnd, UINT uMessage, WPARAM wparam, LPARAM lparam)
  164. {
  165.     return DispCommand(&cmdiChild, hwnd, wparam, lparam);
  166. }
  167.  
  168.  
  169. //
  170. //  FUNCTION: MsgMCDestroy(HWND, UINT, WPARAM, LPARAM)
  171. //
  172. //  PURPOSE:
  173. //
  174. //  PARAMETERS:
  175. //    hwnd - The window handing the message.
  176. //    uMessage - The message number. (unused).
  177. //    wparam - Message specific data (unused).
  178. //    lparam - Message specific data (unused).
  179. //
  180. //  RETURN VALUE:
  181. //    Always returns 0 - message handled.
  182. //
  183. //  COMMENTS:
  184. //
  185. //
  186.  
  187. #pragma argsused
  188. LRESULT MsgMCDestroy(HWND hwnd, UINT uMessage, WPARAM wparam, LPARAM lparam)
  189. {
  190.      cOpen -= 1;
  191.  
  192.      return 0;
  193. }
  194.  
  195.